Jerry's Log

Kafka - KRaft

contents

KRaft(Kafka Raft Metadata mode) 는 카프카의 메타데이터 관리를 위해 기존의 아파치 주키퍼(Apache ZooKeeper)를 대체하는 내장 메커니즘입니다.

KRaft는 Raft 합의 프로토콜을 사용하여 토픽 설정, 브로커 목록, 파티션 리더십과 같은 모든 클러스터 메타데이터를 관리함으로써, 카프카가 단일, 독립형 분산 시스템으로 작동할 수 있게 합니다.

이 변화는 카프카 역사상 가장 중대한 아키텍처 변화로, 운영 단순화, 확장성 향상, 시스템 복원력 증대를 목표로 합니다.


주키퍼를 대체하는 이유: 기존의 문제점

카프카는 오랫동안 클러스터 상태를 관리하기 위해 아파치 주키퍼라는 별개의 분산 시스템에 의존해 왔습니다. 이로 인해 몇 가지 주요한 문제점이 발생했습니다.


KRaft의 작동 원리 ⚙️

KRaft는 모든 메타데이터 관리를 카프카 자체 내부 로 이동시켜 이러한 문제들을 해결합니다. 이는 컨트롤러 쿼럼(Controller Quorum)메타데이터 로그(Metadata Log) 라는 두 가지 핵심 구성 요소를 통해 달성됩니다.

1. 컨트롤러 쿼럼과 Raft

모든 브로커가 주키퍼에 연결하는 대신, 소수의 고정된 브로커(예: 3개 또는 5개)가 설정 파일에서 컨트롤러로 지정됩니다. 이 컨트롤러 노드들은 Raft 쿼럼을 형성합니다.

2. 메타데이터 로그 (__cluster_metadata)

이것이 가장 중요한 부분입니다. 모든 클러스터 메타데이터는 더 이상 주키퍼의 트리형 데이터 구조에 저장되지 않습니다. 대신, 클러스터 내부의 __cluster_metadata 라는 특별하고 복제율이 높은 카프카 토픽에 저장됩니다.

브로커가 특정 파티션의 리더가 누구인지 알아야 할 때, 단순히 이 로그를 소비하여 구축한 자신의 로컬 인메모리 메타데이터 상태 복사본을 조회합니다.


KRaft의 주요 이점

1. 단순성 😌

이것이 첫 번째 이점입니다. 관리해야 할 서비스가 하나뿐입니다.

2. 대규모 확장성 📈

KRaft는 주키퍼의 병목 현상을 제거합니다. 메타데이터를 단순한 카프카 로그로 관리함으로써, KRaft 기반 클러스터는 주키퍼 기반의 한계보다 10배 이상 증가한 수백만 개의 파티션을 지원할 수 있습니다.

3. 더 빠른 장애 복구 및 시작 ⚡


KRaft 현황

references